package com.exam.mapper;

import com.exam.domain.User;
import com.exam.domain.UserMessage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {
    /**
     *@Describe: 用户登陆,查询用户的相关信息
     * @Param: username 用户名
     * @Return: 返回相关的Message
     * @since: 2016-12-20
     * @author: jly
     */
    User loginMessage(@Param("username") String username);

    /**
     * 根据登录用户名查询密码
     * @param username
     * @since: 2016-12-20
     * @author: jly
     */
    String selectPassowrdByUserName(@Param("username")String username);

    /**
     * 用户个人信息
     * @Param: username
     * @return: UserMassage 类型的用户相关信息
     * @since: 2016-12-21
     * @author: jly
     * */
    UserMessage userInfo(@Param("username")String username);

    /**
     * 修改密码
     *
     * @param:  newpsw 新密码
     *          username 用户名
     * @since: 2016-12-21
     * @author: jly
     * */
    boolean updatePassowrd(@Param("newpsw") String newpsw, @Param("username")String username);

    /**
     * 修改个人信息
     *
     * @param:  username 用户名
     *          name 姓名
     *          mail 邮箱
     * @since: 2016-12-21
     * @author: jly
     * */
    boolean updateUserInfo(@Param("username")String username,
                           @Param("name") String name,
                           @Param("mail") String mail);

    /**
     * 查看人员列表
     *
     * @return: UserMassage 类型的用户列表及相关信息
     * @since: 2017-2-7
     * @author: jly
     * */
    List<UserMessage> userList(@Param("username") String username,
                               @Param("name") String name,
                               @Param("roleId") int roleId);

    /**
     * 添加用户具体操作
     *
     * @return: 返回操作成功与否
     * @since: 2017-2-12
     * @author: jly
     * */
    boolean addUserOperate(@Param("username")String username,
                           @Param("name")String name,
                           @Param("roleId")int roleid,
                           @Param("mail")String mail);

    /**
     * 判断用户名是否已经存在
     *
     * @return: int result> 0 存在
     * @Since: 2017-2-12
     * @author: jly
     * */
    int userExist(@Param("username")String username);

    /**
     * 管理员修改用户信息（姓名，角色，邮箱）
     *
     * @return: boolean 是否修改成功
     * @Since: 2017-2-12
     * @author: jly
     * */
    boolean modifyUserMessage(@Param("truename")String truename,
                              @Param("mail")String mail,
                              @Param("role") int role,
                              @Param("userid") int userid);

    /**
     * 删除用户
     *
     * @return: boolean 是否删除成功
     * @Since: 2017-2-13
     * @author: jly
     * */
    boolean deleteUser(@Param("userid") int userid);

    int getTotal();

    List<User> getusers(@Param("page")Integer page, @Param("rows")Integer rows);
}